package Socketserver.Medium.TestMediumUser;

import Socketserver.Medium.Medium;

import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.List;

/**
 * TestMediumUserAbstruct接口的实现类
 * 功能：处理直接用户交互（如控制台输入输出），具体业务逻辑依赖Medium层
 */
public class TestMediumUser implements TestMediumUserAbstruct {
    Medium medium=new Medium();
    /**
     * 启动用户交互流程的入口方法
     * 作用：初始化并启动用户操作的处理线程
     */
    public void running(){

        // 启动新线程处理用户交互（避免阻塞主线程）
        new Thread() {
            public void run(){
                System.out.println("欢迎来到王者荣耀");  // 示例欢迎信息，可替换为实际业务提示
                //System.out.println(sc.nextLine());  // 读取用户输入并打印（示例交互逻辑）
                //menu();
//                UserSHOW_LOGIN();//【登录+注册 完成】
//                UserSHOW_SELECT();//查询【查看我的账户】
//                UserSHOW_UODATE();//修改【成功】
//                UserSHOW_DROP();//删除【账号 完成】

                UserSHOW_LOGIN();//【登录+注册 完成】
                //UserSHOW_TXT_ADD();//【添加 完成】
//                UserSHOW_TXT_DROP();//删除文章 【完成】
                //UserSHOW_TXT_SELECT();//查找【完成】
                //UserSHOW_TXT_UPDATE();//修改
                //UserSHOW_TXT_reading();
                UserSHOW_Screen_public();
                //查看文章
                //修改
                //不要让重复的数据 加入
            }
        }.start();
    }

    // 说明：直接用户操作，无需Socket，仅依赖Medium层处理核心业务
    // 用户唯一标识ID（登录后赋值，用于关联用户操作）
    public String Users_id = null;
    // 控制台输入工具（用于接收用户的键盘输入）
    Scanner sc = new Scanner(System.in);
    //啊？
    public void menu(){
        List<String> arrayss=new ArrayList<>(9);
        arrayss.add("登录");
        arrayss.add("修改");
        arrayss.add("注销");
        arrayss.add("查看我的个人信息");
        arrayss.add("查看文案");
        arrayss.add("添加文案");
        arrayss.add("修改文案");
        arrayss.add("删除文章");
        System.out.println("__________________________________________________");
        for(String i:arrayss){
            System.out.println(i);
        }
        System.out.println("__________________________________________________");
    }
    /**
     * 通用返回器的实现
     * 作用：根据业务需求返回任意类型数据（具体逻辑由用户实现）
     */
    @Override
    public <T> T UserSHOW() {
        return null;  // 待实现：返回实际业务数据
    }

    /**
     * 登录操作的实现
     * 作用：处理登录逻辑（如验证用户名密码），返回登录结果字符串
     * 【登录+注册 完成】
     */
    @Override
    public String UserSHOW_LOGIN() {
        //boolean Medium_POWER_login(String password,String type);//1.登录【我会保留你的信息直到你退出】
        String password = "";
        String type = "";
        System.out.println("__________________________________________________");
        System.out.println("登录:");
        System.out.print("数入密码:");password = sc.nextLine();
        System.out.print("数入账号:");type=sc.nextLine();
        if(medium.Medium_POWER_login(password,type)){
            System.out.println("成功登录");
            this.Users_id=medium.ROOT_POWER_SELECT_FROM_user_FORGET(
                    "root",
                    medium.root.getTable_password(),
                    password
            ).get(0).get("id");
        }else{
            System.out.println("失败登录 是否注册用户（y/n）");
            if(sc.nextLine().equals("y")){
                //boolean User_POWER_ADD_Account_(String USER_id,String name,String password,String type);//1.单行添加user(账号) 注册
                String USER_id= new Date()+String.valueOf(new Random().nextInt(9999));
                System.out.println("输入 昵称");
                String name=sc.nextLine();
                System.out.println("输入 密码");
                String Userpassword=sc.nextLine();
                System.out.println("输入 账号");
                String Usertype=sc.nextLine();
                if(medium.User_POWER_ADD_Account_(USER_id,name,Userpassword,Usertype)){
                    System.out.println("成功注册");
                }else{
                    System.out.println("成功注册");
                }
            }else{
                return "";
            }
        }
        System.out.println("__________________________________________________");
        return "";  // 待实现：返回登录成功/失败的描述
    }

    /**
     * 修改用户信息操作的实现
     * 作用：处理用户信息更新逻辑，返回修改结果字符串
     *
     */
    @Override
    public String UserSHOW_UPDATE() {
        //boolean User_POWER_UPDATE_Account_(String USER_id,String key,String value);//1.单行修改自己的账号(账号)
        System.out.println("是否修改 用户信息：【y/n】");
        if(!sc.nextLine().equals("y")){
            return "";
        }

        System.out.println("__________________________________________________");
        if(this.Users_id==null){
            System.out.println("你还没登陆");
            System.out.println("__________________________________________________");
            return "";
        }

        System.out.println("输入要修改的信息:[name(1)/password(2)/type(3)]");
        String keys=null;
        switch (sc.nextLine()){
            case "1": keys="name";break;
            case "2": keys="password";break;
            case "3": keys="type";break;
            default: break;
        }
        if(keys==null){
            return "";
        }
        System.out.println("输入要修改的内容");
        String values=sc.nextLine();
        if(medium.User_POWER_UPDATE_Account_(this.Users_id,keys,values)){
            System.out.println("修改成功");
        }else{
            System.out.println("修改失败");
        }

        return "";  // 待实现：返回修改成功/失败的描述（注：方法名建议修正为UserSHOW_UPDATE）
    }

    /**
     * 注销账号操作的实现
     * 作用：处理账号注销逻辑，返回注销结果字符串
     * 删除【账号 完成】
     */
    @Override
    public String UserSHOW_DROP() {
        System.out.println("__________________________________________________");
        //boolean User_POWER_DELETE_Account_(String USER_id);//1.单行删除 自己的账号
        System.out.println("是否要删除你的账号 [y/n]");
        if(!sc.nextLine().equals("y")){
            System.out.println("下次吧");
        }else{
            if(this.Users_id==null){
                System.out.println("你还没登陆");
            }else{
                if(medium.User_POWER_DELETE_Account_(this.Users_id)){
                    System.out.println("账号已经删除");
                    this.Users_id=null;
                }else{
                    System.out.println("删除出错");
                }
            }

        }

        System.out.println("__________________________________________________");
        return "";  // 待实现：返回注销成功/失败的描述
    }

    /**
     * 查看个人信息操作的实现
     * 作用：查询并返回当前用户的个人信息字符串
     * 【查看我的账户】
     */
    @Override
    public String UserSHOW_SELECT() {
        //List<Map<String, String>> User_POWER_SELECT_FROM_user_(String USER_id);//1.查看自己的账号信息
        System.out.println("是否调出 用户信息：【y/n】");
        if(!sc.nextLine().equals("y")){
            return "";
        }

        System.out.println("__________________________________________________");
        System.out.println("关于我的账号：");

        if(this.Users_id==null){
            System.out.println("你还没登陆");
            System.out.println("__________________________________________________");
            return "";
        }

        List<Map<String, String>> lenght=medium.User_POWER_SELECT_FROM_user_(this.Users_id);
        if(lenght==null){
            System.out.println("查无此人");
        }else{
            for (int i = 0; i < lenght.size(); i++) {
                System.out.println("name"+lenght.get(i).get("name"));
                System.out.println("password"+lenght.get(i).get("password"));
                System.out.println("type"+lenght.get(i).get("type"));
            }
        }
        System.out.println("__________________________________________________");
        return "";  // 待实现：返回用户个人信息（如ID、昵称等）
    }

    //文件默认操作地址为：D:\a_E\桌面\IdeaProjects\IdeaProjects\WHAT_JAVA_HOMEWORK_FOR_CLASS\src\User\USERS_file\TXT.txt
    //但是为了防止 移动数据导致出问题
    // 所以用System.getProperty("user.dir")+"\\src\\aTXT_pagage\\
    //System.getProperty("user.dir")+\src\User\USERS_file\
    /**
     * 查看文案操作的实现
     * 作用：查询指定文案内容，返回文案信息字符串
     */
    @Override
    public String UserSHOW_TXT_SELECT() {
        //List<Map<String, String>> User_POWER_SELECT_FROM_txt_(String USER_id);//2.所有可以看的文章
        System.out.println("是否观看文件：【y/n】");
        if(!sc.nextLine().equals("y")){
            return "";
        }
        System.out.println("__________________________________________________");
        if(this.Users_id==null){
            System.out.println("你还没登陆");
            System.out.println("__________________________________________________");
            return "";
        }
        System.out.println("我要看 【1】全部文章目录 【2】我的文章目录 【3】选择文章阅读");
        List< Map<String,String> > mmp;
        int i=1;
        switch (sc.nextLine()){
            case "1":
                //public List<Map<String, String>> ROOT_POWER_SELECT_FROM_txt_FORGET(String USER_id, String TXT_key, String TXT_value)
                mmp=medium.ROOT_POWER_SELECT_FROM_txt_FORGET("root", "TXT_name", null);
                for(Map<String, String> entry : mmp){
                    System.out.println(i+" "+entry.get("TXT_name")+" "+entry.get("TXT_author"));
                    i++;
                }
                break;
            case "2":
                mmp= medium.User_POWER_SELECT_FROM_txt_(this.Users_id);
                for(Map<String, String> entry : mmp){
                    System.out.println(i+" "+entry.get("TXT_name")+" "+entry.get("TXT_author"));
                    i++;
                }
                break;
            case "3":
                System.out.println("阅读？？");
                break;
            default:
                System.out.println("无效选择");
                break;
        }
        System.out.println("__________________________________________________");
        return "";  // 待实现：返回文案内容或查询结果
    }

    /**
     * 添加文案操作的实现
     * 作用：创建并保存新文案，返回添加结果字符串
     */
    @Override
    public String UserSHOW_TXT_ADD() {
        //boolean User_POWER_ADD_TXT_(String USER_id,String TXT_name,String author,byte[] File_byte);//2.添加作品[]
        System.out.println("是否添加文件：【y/n】");
        if(!sc.nextLine().equals("y")){
            return "";
        }

        System.out.println("__________________________________________________");
        if(this.Users_id==null){
            System.out.println("你还没登陆");
            System.out.println("__________________________________________________");
            return "";
        }

        System.out.println("输入你的文件地址 TXT 文件");
        System.out.println("测试：  D:/a_E/桌面/IdeaProjects/IdeaProjects/WHAT_JAVA_HOMEWORK_FOR_CLASS/src/User/USERS_file");
        String address=sc.nextLine();
        System.out.println("输入你的文件名称");
        System.out.println("测试：  TXT.txt");
        String name=sc.nextLine();

        address=address+"/"+name;
        //是不是txt 文件
        //
        UserSHOW_TXT_ADD_FILE(address,name);


        return "";
    }
    public String UserSHOW_TXT_ADD_FILE(String address,String name){
        // 源文件路径
        //String sourceFilePath = "D:\\a_E\\桌面\\IdeaProjects\\IdeaProjects\\WHAT_JAVA_HOMEWORK_FOR_CLASS\\src\\User\\USERS_file\\TXT.txt";
        // 目标文件路径
        //String targetFilePath = "D:\\a_E\\桌面\\IdeaProjects\\IdeaProjects\\WHAT_JAVA_HOMEWORK_FOR_CLASS\\src\\aTXT_pagage\\TXT.txt";

        //File sourceFile = new File(sourceFilePath);
        /**
         * System.getProperty("user.dir")+"\\src\\aTXT_pagage\\"
         */
        File sourceFile = new File(
                address
        );
        // 检查源文件是否存在
        if (!sourceFile.exists() || !sourceFile.isFile()) {
            System.out.println("源文件不存在或不是有效文件！");
            return "";
        }

        // 确保目标目录存在（先于流初始化，避免创建流时失败）
        //File targetFile = new File(targetFilePath);
        //File targetDir = targetFile.getParentFile();
        // 确保目标目录存在（先于流初始化，避免创建流时失败）
        File targetDir = new File(
                System.getProperty("user.dir")+"\\src\\aTXT_pagage\\"+name
        ).getParentFile();
        if (targetDir != null && !targetDir.exists()) {
            targetDir.mkdirs(); // 自动创建多级目录
        }

        byte[] fileBytes = null;
        try (FileInputStream fis = new FileInputStream(sourceFile)) {
            // 获取文件长度（注意：超过2GB时，length()返回的long会超出int范围，导致数组创建失败）
            long fileLength = sourceFile.length();
            if (fileLength > Integer.MAX_VALUE) {
                System.out.println("文件过大（超过2GB），不适合用byte[]一次性加载！");
                return "";
            }

            // 创建与文件大小相同的byte数组
            fileBytes = new byte[(int) fileLength];
            // 一次性读取全部字节到数组中
            int totalRead = fis.read(fileBytes);
            if (totalRead != fileLength) {
                System.out.println("文件读取不完整！实际读取：" + totalRead + "字节，预期：" + fileLength + "字节");
                return "";
            }

        } catch (IOException e) {
            System.out.println("读取源文件失败：" + e.getMessage());
            e.printStackTrace();
            return "";
        }

        // 将byte[]写入目标文件
        // 将byte[]写入目标文件
        //User_POWER_ADD_TXT_WRITE(String new_name,byte[] fileBytes)
        medium.User_POWER_ADD_TXT_WRITE(name,fileBytes);
        medium.User_POWER_ADD_TXT_(
                this.Users_id,
                name,
                medium.ROOT_POWER_SELECT_FROM_user_FORGET(
                        "root",
                        medium.root.getTable_id(),
                        this.Users_id
                ).get(0).get("name"),
                fileBytes
        );
        return "";  // 待实现：返回添加成功/失败的描述
    }


    /**
     * 修改文案操作的实现
     * 作用：更新已有文案内容，返回修改结果字符串
     */
    @Override
    public String UserSHOW_TXT_UPDATE() {
        //要么 不做
        //要么 把 新文件替代旧文件
        System.out.println("是否修改文件 只能修改文件名 ：【y/n】");
        if(!sc.nextLine().equals("y")){
            return "";
        }
        System.out.println("__________________________________________________");
        if(this.Users_id==null){
            System.out.println("你还没登陆");
            System.out.println("__________________________________________________");
            return "";
        }
        //先查看文章：
        System.out.println("+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_");
        List< Map<String,String> > mmp=medium.User_POWER_SELECT_FROM_txt_(this.Users_id);
        int i=1;
        for(Map<String, String> entry : mmp){
            System.out.println(i+" "+entry.get("TXT_name")+" "+entry.get("TXT_author"));
            i++;
        }
        System.out.println("请问你要修改哪一个");
        System.out.println("+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_");
        //
        int array_way= Integer.parseInt(sc.nextLine());//整数化
        String AuthorID=medium.User_POWER_SELECT_FROM_txt_(this.Users_id).get(array_way-1).get("TXT_id");
        String name=medium.User_POWER_SELECT_FROM_txt_(this.Users_id).get(array_way-1).get("TXT_name");

        String address=System.getProperty("user.dir")+"/src/aTXT_pagage";
        System.out.println("输入你的新文件名称");
        System.out.println("测试：  TXT2.txt");
        String new_name=sc.nextLine();
        if(new_name.equals(name)){
            System.out.println("__________________________________________________");
            return "";  // 待实现：返回修改成功/失败的描述
        }else{
            address=address+"/"+name;
            UserSHOW_TXT_UPDATE_ADD_FILE(address,new_name,name);
            UserSHOW_TXT_UPDATE_DROP_FILE(AuthorID);
            System.out.println("__________________________________________________");
            return "";  // 待实现：返回修改成功/失败的描述
        }

    }
    public String UserSHOW_TXT_UPDATE_DROP_FILE(String AuthorID) {
        //boolean User_POWER_DELETE_TXT_(String TXT_ID,String USER_id);//2.删除 自己的文案[id选择]

        //2.找到author Author
        //List<Map<String, String>> User_POWER_SELECT_FROM_txt_(String USER_id);//2.所有可以看的文章

        //
        if(medium.User_POWER_DELETE_TXT_(AuthorID,this.Users_id)){
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }

        return "";  // 待实现：返回删除成功/失败的描述
    }
    public String UserSHOW_TXT_UPDATE_ADD_FILE(String address,String new_name,String name){
        // 源文件路径
        //String sourceFilePath = "D:\\a_E\\桌面\\IdeaProjects\\IdeaProjects\\WHAT_JAVA_HOMEWORK_FOR_CLASS\\src\\User\\USERS_file\\TXT.txt";
        // 目标文件路径
        //String targetFilePath = "D:\\a_E\\桌面\\IdeaProjects\\IdeaProjects\\WHAT_JAVA_HOMEWORK_FOR_CLASS\\src\\aTXT_pagage\\TXT.txt";

        //File sourceFile = new File(sourceFilePath);
        /**
         * System.getProperty("user.dir")+"\\src\\aTXT_pagage\\"
         */
        File sourceFile = new File(
                address
        );
        // 检查源文件是否存在
        if (!sourceFile.exists() || !sourceFile.isFile()) {
            System.out.println("源文件不存在或不是有效文件！");
            return "";
        }

        // 确保目标目录存在（先于流初始化，避免创建流时失败）
        //File targetFile = new File(targetFilePath);
        //File targetDir = targetFile.getParentFile();
        // 确保目标目录存在（先于流初始化，避免创建流时失败）
        File targetDir = new File(
                System.getProperty("user.dir")+"\\src\\aTXT_pagage\\"+new_name
        ).getParentFile();
        if (targetDir != null && !targetDir.exists()) {
            targetDir.mkdirs(); // 自动创建多级目录
        }

        byte[] fileBytes = null;
        try (FileInputStream fis = new FileInputStream(sourceFile)) {
            // 获取文件长度（注意：超过2GB时，length()返回的long会超出int范围，导致数组创建失败）
            long fileLength = sourceFile.length();
            if (fileLength > Integer.MAX_VALUE) {
                System.out.println("文件过大（超过2GB），不适合用byte[]一次性加载！");
                return "";
            }

            // 创建与文件大小相同的byte数组
            fileBytes = new byte[(int) fileLength];
            // 一次性读取全部字节到数组中
            int totalRead = fis.read(fileBytes);
            if (totalRead != fileLength) {
                System.out.println("文件读取不完整！实际读取：" + totalRead + "字节，预期：" + fileLength + "字节");
                return "";
            }

        } catch (IOException e) {
            System.out.println("读取源文件失败：" + e.getMessage());
            e.printStackTrace();
            return "";
        }

        // 将byte[]写入目标文件
        //User_POWER_ADD_TXT_WRITE(String new_name,byte[] fileBytes)
        medium.User_POWER_ADD_TXT_WRITE(new_name,fileBytes);
        medium.User_POWER_ADD_TXT_(
                this.Users_id,
                new_name,
                medium.ROOT_POWER_SELECT_FROM_user_FORGET(
                        "root",
                        medium.root.getTable_id(),
                        this.Users_id
                ).get(0).get("name"),
                fileBytes
        );
        return "";  // 待实现：返回添加成功/失败的描述
    }

    /**
     * 删除文案操作的实现
     * 作用：删除指定文案，返回删除结果字符串
     */
    @Override
    public String UserSHOW_TXT_DROP() {
        //boolean User_POWER_DELETE_TXT_(String TXT_ID,String USER_id);//2.删除 自己的文案[id选择]
        System.out.println("是否删除文件：【y/n】");
        if(!sc.nextLine().equals("y")){
            return "";
        }
        System.out.println("__________________________________________________");
        if(this.Users_id==null){
            System.out.println("你还没登陆");
            System.out.println("__________________________________________________");
            return "";
        }
        //2.找到author Author
        //List<Map<String, String>> User_POWER_SELECT_FROM_txt_(String USER_id);//2.所有可以看的文章
        //先查看文章：
        System.out.println("+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_");
        List< Map<String,String> > mmp=medium.User_POWER_SELECT_FROM_txt_(this.Users_id);
        int i=1;
        for(Map<String, String> entry : mmp){
            System.out.println(i+" "+entry.get("TXT_name")+" "+entry.get("TXT_author"));
            i++;
        }
        System.out.println("请问你要删除哪一个");
        System.out.println("+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_");
        //删除
        int array_way= Integer.parseInt(sc.nextLine());//整数化
        String AuthorID=medium.User_POWER_SELECT_FROM_txt_(this.Users_id).get(array_way-1).get("TXT_id");
        //
        if(medium.User_POWER_DELETE_TXT_(AuthorID,this.Users_id)){
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }
        System.out.println("__________________________________________________");
        return "";  // 待实现：返回删除成功/失败的描述
    }

    //阅读
    @Override
    public String UserSHOW_TXT_reading() {
        //找到文章地址
        //找到文章 【没找到返回】
        //创建文件 类
        //1.分页阅读 【按钮 上一页 结束【end e n】 下一页】
            //1. 读取整个文档内容
            //2. 按换行符分割成行数组
            //3. 设置每页显示行数 = 10
            //4. 计算总页数 = 行数 ÷ 每页行数（向上取整）
            //5. 显示第1页（第1-10行）
            //6. 用户点击"下一页"时，显示第2页（第11-20行）
        Medium medium = new Medium();
        // 测试参数配置
        String testUserId = this.Users_id;    // 测试用户ID（文本作者）
        String testTxtId = medium.User_POWER_SELECT_FROM_txt_(this.Users_id).get(0).get("TXT_id");
        int pageSize = 500;                   // 每页100字节（可调整）

        //System.out.println("=== 测试1：正常查看第1页 ===");
        int pageNo = 1;
        while (true){
            System.out.print("【-1】 退出 \n");
            System.out.println("[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[");
            medium.User_POWER_SELECT_TXT_BY_PAGETestSegmentView(medium, testUserId, testTxtId, pageNo, pageSize);
            System.out.println("[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[");
            try{
                pageNo= Integer.parseInt(sc.nextLine());
            }catch(Exception e){
                System.out.println(e.getMessage());
            }
            if(pageNo==-1){
                break;
            }
        }
        return "";
    }



    @Override
    public String UserSHOW_Screen(String value) {
        // 处理value为空的默认提示
        String showText = value == null || value.trim().isEmpty() ? "暂无文本内容" : value;

        // Swing图形化界面必须在事件调度线程中执行，避免界面异常
        SwingUtilities.invokeLater(() -> {
            // 1. 创建显示屏主窗口（模拟物理屏幕）
            JFrame screenWindow = new JFrame("文本显示屏");
            screenWindow.setSize(800, 600); // 显示屏尺寸
            screenWindow.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 关闭窗口不退出程序
            screenWindow.setLocationRelativeTo(null); // 窗口居中

            // 2. 创建文本显示区域，仅用于展示value
            JTextArea textArea = new JTextArea(showText);
            textArea.setFont(new Font("等线", Font.PLAIN, 16)); // 字体适配阅读
            textArea.setLineWrap(true); // 自动换行
            textArea.setWrapStyleWord(true); // 按单词换行，避免文字截断
            textArea.setEditable(false); // 禁止编辑，仅展示

            // 3. 添加滚动条（文本过长时可滚动查看）
            JScrollPane scrollPane = new JScrollPane(textArea);
            scrollPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); // 文本内边距

            // 4. 将文本区域加入窗口，显示显示屏
            screenWindow.add(scrollPane);
            screenWindow.setVisible(true);
        });

        return "显示屏已打开，文本展示中";
    }
    public String UserSHOW_Screen_public(){
        //Map<String, Object> result = medium.User_POWER_SELECT_TXT_BY_PAGE(userId, txtId, pageNum, pageSize);
        String testTxtId = medium.User_POWER_SELECT_FROM_txt_(this.Users_id).get(0).get("TXT_id");
        int pageSize = 1000;                   // 每页100字节（可调整）
        Map<String, Object> result = medium.User_POWER_SELECT_TXT_BY_PAGE(
                this.Users_id,
                testTxtId,
                1,
                pageSize
        );
        boolean success = (boolean) result.get("success");
        if (success) {
            System.out.println("文章名称：" + result.get("txtName"));
            System.out.println("当前页：" + result.get("pageNum") + " / 总页数：" + result.get("totalPages"));
            System.out.println("当前页内容（字节数：" + ((String) result.get("content")).getBytes(StandardCharsets.UTF_8).length + "）：");
            System.out.println(result.get("content"));
            System.out.println("是否有下一页：" + result.get("hasNext") + " | 是否有上一页：" + result.get("hasPrev"));
        } else {
            System.out.println("失败原因：" + result.get("msg"));
        }
        ;
        UserSHOW_Screen((String) result.get("content"));
        return "";
    }
}